package m202405.d09;

import java.util.*;

/**
 * @@author: 爱做梦的锤子
 * @date: 2024/5/9 18:41
 */
public class Q49 {

    public static void main(String[] args) {
        Q49 q49 = new Q49();
        q49.groupAnagrams(new String[]{"rub", "bur"});
    }

    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> map = new HashMap<>();
        for (String str : strs) {
            char[] charArray = str.toCharArray();
            Arrays.sort(charArray);
            String key = String.valueOf(charArray);
            List<String> orDefault = map.getOrDefault(key, new ArrayList<>());
            orDefault.add(str);
            map.put(key, orDefault);
        }
        return new ArrayList<>(map.values());
    }

//    public List<List<String>> groupAnagrams(String[] strs) {
//        Map<String, List<String>> map = new HashMap<>();
//        for (String str : strs) {
//            String key = getKey(str);
//            List<String> orDefault = map.getOrDefault(key, new ArrayList<>());
//            orDefault.add(str);
//            map.put(key, orDefault);
//        }
//        return new ArrayList<>(map.values());
//    }


    int[] array = new int['z' - 'a' + 1];

    private String getKey(String s) {
        Arrays.fill(array, 0);
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            array[c - 'a'] += 1;
        }
        return Arrays.toString(array);
    }

//    private String getKey(String s) {
//        Map<Character, Integer> map = new TreeMap<>();
//        for (int i = 0; i < s.length(); i++) {
//            char c = s.charAt(i);
//            Integer orDefault = map.getOrDefault(c, 0);
//            map.put(c, orDefault + 1);
//        }
//        return Arrays.toString(map.entrySet().toArray());
//    }
}
